package com.chapter.sample.jvm.gc.escape;

/**
 * 锁消除
 */
public class SynchronizedTest {
    public void f() {
        Object hollis = new Object();
        /**
         * 代码中堆hollis这个对象进行加锁，但是hollis对象的生命周期只在f（）方法中,
         * 并不会被其他线程所访问到，所以在JIT编译阶段就会被优化掉
         *
         * 每个线程进行都会创建自己的 Object hollis = new Object(); 相当于无锁
         * 并且加锁会耗费性能，JIT编译器就会去优化这段代码；
         *
         */
        synchronized (hollis) {
            System.out.println(hollis);
        }
        /**
         * 优化后
         * Object hollis = new Object();
         * System.out.println(hollis);
         */
    }
}
